<?php

namespace Siese\EntityBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Siese\EntityBundle\Form\EventListener\AddEntidadesInspeccionFieldSubscriber;
use Siese\EntityBundle\Form\EventListener\AddEstadosFieldSubscriber;

class FiltrosBusquedaType extends AbstractType
{
    
    protected $empty_value = "Seleccione una Opción";
    
    protected $em;
   
    public function __construct($em) 
    {
      $this->em = $em;
    }
   
   /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {  
        $aniosPob = $this->em->getRepository('SieseEntityBundle:InspeccionesEntidades')->findAniosDistintosPob();
        
        $anios = $this->em->getRepository('SieseEntityBundle:InspeccionesEntidades')->findAniosDistintos();
       
        
        
        if($aniosPob):
          foreach($aniosPob as $row):
            if($row['ano'] != ''):
             $choicesAnios[$row['ano']] = $row['ano'];
            endif;
          endforeach;
        endif;
        
        
        if($anios):
          foreach($anios as $row):
            if($row['ano'] != ''):
              $choicesAnios[$row['ano']] = $row['ano'];
            endif;
          endforeach;
        endif;
        
        
        if(!isset($choicesAnios)):
          $fechaActual = new \DateTime('now');
          $choicesAnios[$fechaActual->format('Y')] = $fechaActual->format('Y');    
        endif;
        
        $propertyPathToEntidad = "entidad";
  
        $builder
          ->add('anios','choice',
                    array('label' => ' ',
                                     'choices' => $choicesAnios,
                                     'empty_value' => $this->empty_value,
                                     'mapped' => false,
                                     'required' => true,
                                     'attr' => array('class' => 'form-control')));
        
        $builder
                
            /* Estos Eventos son los relacionados al campo entidad */
            ->addEventSubscriber(new AddEntidadesInspeccionFieldSubscriber($propertyPathToEntidad))
               
            ->addEventSubscriber(new AddEstadosFieldSubscriber($propertyPathToEntidad))
        ;        
               
    }
    
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Siese\EntityBundle\Entity\InspeccionesEntidadesPob'
        ));
    }
    
    public function getName()
    {
        return 'siese_filtros_busqueda';
    }
}